home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2002 #11 / Amiga Plus CD - 2002 - No. 11.iso / Tools / Development / PowerD / powerd / examples / sub.d < prev    next >
Text File  |  2002-10-28  |  1KB  |  45 lines

  1. // This proggy subtracts two input files and writes result into output file.
  2. // It may be usefull, if you have two same programs/sources, but one doesn't
  3. // run and you can't find differences. If input files are same, output file
  4. // will contain only zeroes.
  5.  
  6. MODULE    'exec/memory'
  7.  
  8. OPT    DOSONLY
  9.  
  10. ENUM    FILEA,FILEB,DST
  11.  
  12. PROC main()
  13.     DEF    rda,args:PTR TO LONG,mem1,mem2,i1,i2,o
  14.     args:=[NIL,NIL,NIL]
  15.     IF rda:=ReadArgs('FILEA/A,FILEB/A,DST/A',args,NIL)
  16.         IF mem1:=AllocMem(32768,MEMF_PUBLIC)
  17.             IF mem2:=AllocMem(32768,MEMF_PUBLIC)
  18.                 IF i1:=Open(args[FILEA],OLDFILE)
  19.                     IF i2:=Open(args[FILEB],OLDFILE)
  20.                         IF o:=Open(args[DST],NEWFILE)
  21.                             Sub(mem1,mem2,i1,i2,o)
  22.                             Close(o)
  23.                         ELSE PrintFault(IOErr(),'sub')
  24.                         Close(i2)
  25.                     ELSE PrintFault(IOErr(),'sub')
  26.                     Close(i1)
  27.                 ELSE PrintFault(IOErr(),'sub')
  28.                 FreeMem(mem2,32768)
  29.             ELSE PrintF('\s: not enough memory','sub')
  30.             FreeMem(mem1,32768)
  31.         ELSE PrintF('\s: not enough memory','sub')
  32.         FreeArgs(rda)
  33.     ELSE PrintFault(IOErr(),'sub')
  34. ENDPROC
  35.  
  36. PROC Sub(bufa:PTR TO CHAR,bufb:PTR TO CHAR,i1,i2,o)
  37.     DEF    l,i
  38.     REPEAT
  39.         l:=Read(i1,bufa,32768)
  40.         Read(i2,bufb,32768)
  41.         FOR i:=0 TO l-1 bufa[i]-=bufb[i]
  42.         Write(o,bufa,l)
  43.     UNTIL l<32768
  44. ENDPROC
  45.